A disk array, such as redundant array of independent disks (RAID), has wide application in the data storage field, which may prevent data lost caused by failure of a disk or a storage apparatus by utilizing redundancy of data and disks. According to different demands of protection, different RAID structures are defined, like common RAID 0, RAID 1, RAID 3, RAID 5, RAID 6, RAID 10 and etc. Conventionally, each disk in a RAID may be logically divided into stripes each with fixed storage capacity. In order to improve reliability of the disk array, redundant data can be used to perform error detection and data repair. For example, RAID 3, RAID 5 and RAID 6 typically use XOR parity to ensure data redundancy for the stripes.
Generally speaking, for a disk being more often as a parity position, read and write operations may result in a higher disk wearing level. However, all of the existing traditional striped parity RAID algorithms may have a fixed sub-algorithm to select a disk position to store stripe parity, instead of dynamically balancing wearing among the disks based on the wearing levels of all of the disks in the RAID. In the meantime, the traditional RAID algorithms that selecting a fixed parity position cannot control or affect the wearing levels of the disks in the same stripe. As a result, the wearing level of the RAID cannot be anticipated, and it is unable to control the growth of the wearing level.